
        <html>
			<head>
			     <title>海莲花的反击——一个新近真实攻击案例的分析 - 360安全卫士</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/news/15974">http://drops.wooyun.org/news/15974</a></h1>
				
      <p>
        <h1>0x00 引子</h1>

<hr />

<p>人在做，天在看。</p>

<p>2015年5月底360天眼实验室发布了海莲花APT组织的报告，揭露了一系列长期对我国的关键部门进行针对性攻击窃取机密数据的攻击活动。</p>

<p>相关的报告：<a href="https://ti.360.com/upload/report/file/OceanLotusReport.pdf">https://ti.360.com/upload/report/file/OceanLotusReport.pdf</a></p>

<p>其实，我们知道对于APT团伙如果不从人员这个根本点上解决问题，那么公开的揭露只是促使其采用的新攻击方式的缓解措施而已，过不多久就会改头换面卷土重来。从天眼实验室跟踪的多个APT团伙及其活动来看，从未有什么团伙在被揭露以后而全面停止活动的，从未。正如传统情报领域的谍战对抗，网络空间只是另外开辟的一个新战场，对抗永远都会存在，强度也会一再增强。</p>

<p>发布报告一年左右的今天，我们还在持续监测着海莲花团伙的活动，最近的大网数据显示在4月份就发生了数百例新的感染，威胁并没有出现缓解的迹象，本篇会通过介绍一个真实的案例来展现相关的细节。</p>

<!--more-->

<h1>0x01 案例</h1>

<hr />

<p>这是一个观察到的真实海莲花新近攻击活动，360的天眼威胁感知与天擎终端安全产品使我们能够对网络和主机上发生的事情做集中化的关联分析，让完整攻击活动的来龙去脉做准实时的感知和展现成为了可能。</p>

<h3>初始进入</h3>

<p>小王是一个供职于某个敏感机构的员工，他的工作有部分内容涉及对外的联络，于是他的电子邮箱地址被公布在单位对外的网站上。</p>

<p>2016年4月的某一天，他从邮箱里收到一个好像来自上级的邮件，内容很简略，涉及所在单位的审核计划。当然，如我们所知的鱼叉邮件攻击那样，邮件还带了一个文件名为“2016年度上级及内部审核计划.rar”的附件。</p>

<p>不奇怪的，像大多数不太小心的员工那样，小王点击附件打开了RAR文件，里面有个名为“关于发布《2016年度上级及内部审核计划》的通知.exe”的Word程序图标的文件（应该叫程序）。这时，攻击行动到达了关键点，小王如果有点安全意识，知道来历不明的EXE文件不可乱点，那攻击就到此为止了。可惜小王没有丝毫戒心地点击了，以下的事情在电脑后台发生了，而受害者小王对此一无所知。</p>

<p>程序其实就是OceanLotus Encryptor的一个简单变化版本，执行以后行为与天眼实验室在去年发布报告后有同学做的样本分析基本一致，详细分析可以参考文章：技术剖析：<a href="http://www.freebuf.com/articles/system/69356.html">海莲花OceanLotus Encryptor样本分析</a></p>

<p>总之，经过层层解密程序最终连接外部的C&amp;C服务器，从此服务器获取了进一步的指令：从一个服务器下载执行某个模块以获取进一步的控制。</p>

<p><strong>具体的操作</strong></p>

<p>伪装成QQ程序的qq.exe进程从 hxxp://xxx.xxx.xxx.xxx/images/logo.png 下载一个看起来是PNG图片的文件。</p>

<p>文件名：logo.png</p>

<p>下载回来打开就会发现这其实是一个Powershell脚本，其主要工作就是把内置的Shellcode加载到内存中执行：</p>

<p><img src="http://static.wooyun.org//drops/20160517/2016051709042153565113.jpg" alt="p1" /></p>

<p>var_code中数据Base64解码以后根据经验可以断定是Shellcode：</p>

<p><img src="http://static.wooyun.org//drops/20160517/201605170904246041223.jpg" alt="p2" /></p>

<p>最前面0x34字节的Shellcode负责解密0x34偏移后的数据：</p>

<p><img src="http://static.wooyun.org//drops/20160517/201605170904264336833.jpg" alt="p3" /></p>

<p>从数据的0x34偏移开始为加密段，数据的结构为：</p>

<pre><code>#!cpp
struct CodeData
{
    DWORD dwInitXorCode; //初始密钥
    DWORD dwLength; //紧跟在后面的恶意代码加密后的长度（解密是和dwInitXorCode异或）
    Byte* bData;//编码的恶意代码的内容
}
</code></pre>

<p><img src="http://static.wooyun.org//drops/20160517/201605170904286077743.jpg" alt="p4" /></p>

<p>解密后确认数据构成一个PE文件，如下代码为解密算法：</p>

<pre><code>#!cpp
void Decode()
{
    DWORD dwFirst = 0;
    DWORD dwSecond = 0;
    memcpy((void*)&amp;dwFirst, data+0x34, 4);
    memcpy((void*)&amp;dwSecond, data+0x38, 4);
    DWORD dwLength = dwSecond ^ dwFirst;

    DWORD dwXorCode = dwFirst;
    unsigned char* szNewBuffer = new unsigned char[dwLength];
    memset(szNewBuffer, 0, dwLength);
    for (int i = 0; i&lt;dwLength; i+=4)
    {
        DWORD dwBuffer = 0;
        memcpy((void*)&amp;dwBuffer, data+0x38+4+i, 4);
        DWORD dwNewBuffer = 0;
        dwNewBuffer = dwBuffer^dwXorCode;
        dwXorCode = dwXorCode^dwNewBuffer;
        memcpy(szNewBuffer+i, (void*)&amp;dwNewBuffer, 4); //szNewBuffer为解密后的数据
    }
}
</code></pre>

<p>解密后的文件是DLL模块：</p>

<p><img src="http://static.wooyun.org//drops/20160517/201605170904307758453.jpg" alt="p5" /></p>

<p>DLL文件的导出模块名为beacon_dll.dll：</p>

<p><img src="http://static.wooyun.org//drops/20160517/201605170904325384063.jpg" alt="p6" /></p>

<p>通过对该DLL的分析发现，入口处会把0x1002e040处的数据通过和0x69异或解密，数据长度为1552字节；如图：</p>

<p><img src="http://static.wooyun.org//drops/20160517/201605170904331462873.jpg" alt="p7" /></p>

<p>解密后可以看到配置信息，里面包含进行通信的C&amp;C地址、Url、UserAgent和亚马逊的域名（为了填充远控协议的HTTP头的host字段）等配置信息：</p>

<p><img src="http://static.wooyun.org//drops/20160517/201605170904355330383.jpg" alt="p8" /></p>

<p>抓包发现木马在进行HTTP隧道通信的时候还耍了点小花招，在请求的Host字段填了知名站点的网址，传输的内容经过编码后放到Cookies字段里，试图混淆视听绕过监测，而伪装的host就是在配置信息里；如图：</p>

<p><img src="http://static.wooyun.org//drops/20160517/201605170904374100793.jpg" alt="p9" /></p>

<p>数据包的HTTP头的Host字段为www.amazon.com，而连接的IP地址为xxx.xxx.xxx.xxx，该IP为木马的C&amp;C地址，Host字段填的为知名网站，如图：</p>

<p><img src="http://static.wooyun.org//drops/20160517/2016051709043811394103.jpg" alt="p10" /></p>

<p>而xxx.xxx.xxx.xxx这个IP从来就没有绑定过域名www.amazon.com。</p>

<h3>渗透工具</h3>

<p>分析到这儿对现在泛滥成灾的基于Powershell的攻击框架熟悉的同学可能已经看出来了，这个攻击荷载就是大名鼎鼎的商业渗透工具Cobalt Strike生成的，去年友商也发现过海莲花团伙使用Cobalt Strike框架进行APT攻击。</p>

<p>不管如何，我们的小王点击执行了那个诱饵程序，他的电脑已经默默地连接到了海莲花团伙的控制端，对方看到的操作界面应该是这样的：</p>

<p><img src="http://static.wooyun.org//drops/20160517/2016051709044052700114.jpg" alt="p11" /></p>

<p>框架支持木马数据交互走HTTP、HTTPS、DNS和SMB隧道协议，当前攻击所用到的beacon.dll就支持beacon&#95;http、beacon&#95;dns、beacon&#95;https和beacon&#95;smb这些监听方式：</p>

<p><img src="http://static.wooyun.org//drops/20160517/2016051709044234677123.jpg" alt="p12" /></p>

<p>框架支持多种类型的攻击荷载生成：</p>

<p><img src="http://static.wooyun.org//drops/20160517/2016051709044352391132.jpg" alt="p13" /></p>

<p>由于能够轻松绕过现有的病毒查杀工具，基于Powershell的后门木马大受欢迎，Cobalt Strike的PayLoad Generator功能就支持这个选项：</p>

<p><img src="http://static.wooyun.org//drops/20160517/2016051709044541417142.jpg" alt="p14" /></p>

<p>攻击框架生成的payload.ps1脚本与我们在这回的攻击中看到的logo.png文件大小存在很大差距：</p>

<p><img src="http://static.wooyun.org//drops/20160517/2016051709044779554151.jpg" alt="p15" /></p>

<p>区别就在var_code变量的内容：</p>

<p><img src="http://static.wooyun.org//drops/20160517/2016051709044962215161.jpg" alt="p16" /></p>

<p>框架产出的payload.ps1脚本中Shellcode功能比较简单，从中可以提取出下载的url地址为：<code>http://xxx.x.x.xxx:808/vQEV</code>，从该网址下载下个阶段的Shellcode执行，如图：</p>

<p><img src="http://static.wooyun.org//drops/20160517/2016051709045119030171.jpg" alt="p17" /></p>

<p>下载回来的数据大小为186KB：</p>

<p><img src="http://static.wooyun.org//drops/20160517/2016051709045345660181.jpg" alt="p18" /></p>

<p>下载回来的代码除了后面的加密后的数据段不一样，Shellcode和海莲花组织的Shellcode的代码是一样的，如图为攻击框架下载下来的vQEV模块的解密代码：</p>

<p><img src="http://static.wooyun.org//drops/20160517/2016051709045423802191.jpg" alt="p19" /></p>

<p>而海莲花的这个名为logo.png的Powershell脚本则直接把需要下载回来的这块代码嵌入到var_code变量中直接执行而不是从网上下载，虽然增大了文件，但减少了由于网络和服务的问题导致的失败。</p>

<h3>横向移动</h3>

<p>控制了小王的电脑，在单位里建立了立足点，海莲花团伙开始使用Cobalt Strike在内网里横向移动。Cobalt Strike框架不仅用来构造初始入侵的Payload投递工具，在获取内网节点的控制以后自动化地扫描发现内网系统各类漏洞及配置问题加以利用以扩大战果，比如我们看到控制者往小王的机器上传了用于扫描SMB服务工具nbtscan.exe，然后立即运行起来对内网执行扫描。</p>

<p>一天以后，内网中的另外几台机器被攻陷，因为受感染机器发出了对外的C&amp;C的连接。其中包括了一台内网办公用服务器，接着我们又看到了非常熟悉的手法：服务器中的两个重要可执行文件被绑上了木马程序同时提供假的Flash升级包并在用户访问的时候提示下载，这样就把服务器变成了水坑。</p>

<p>以后的几天，我们陆续发现内网中其他几台客户端通过访问这个服务器系统下载执行木马而被感染，因为网络中的天眼系统看到了其对外发出的C&amp;C连接。在安装了天擎终端安全产品的客户端在执行下载回来的木马时，虽然做了免杀处理，但基于天眼网络层的威胁情报联动，天擎的终端检测与防御（EDR）机制则会立即对恶意代码做查杀，使攻击者完成的初始控制马上失效。</p>

<p>总结起来，对于我们观察到的这次攻击，整体的过程情况可以用如下的图来表示：</p>

<p><img src="http://static.wooyun.org//drops/20160517/201605170904567777020.jpg" alt="p20" /></p>

<h1>0x02 TTP</h1>

<hr />

<p>从360天眼实验室对大网感染情况的监测，自从去年被我们公开揭露出来以后，只在其后的小一段时间有所沉寂，在确认没有进一步人身威胁以后，海莲花团伙的活动依旧猖獗，甚至超过以往。</p>

<p>随着基于天眼天擎产品在用户环境中部署量的增加，我们看到越来越多的实际攻击案例，网络与终端结合的数据赋予我们的Visibility让我们对海莲花团伙的TTP（Tool、Technique、Procedure）有了更贴近的观察和分析。总体来看，攻击手法上并没有什么变化，但是可以看到的是，由于Powershell天生的有效性，APT团伙（或者黑客组织）对其越来越青睐，正如上面的案例所分析的，从初始入侵payload的构建，到后续内网横向移动等一系列行为中，powershell都被积极地使用，而事实也证明了这样的手段非常有效。</p>

<p>以下是海莲花团伙在Lockheed Martin Cyber Kill Chain各环节上特征描述：</p>

<table>
<thead>
<tr>
  <th>攻击阶段</th>
  <th>特性描述</th>
</tr>
</thead>
<tbody>
<tr>
  <td>侦察跟踪</td>
  <td>关注目标（主要是政府和海事相关）网站，尝试入侵，收集相关的电子邮箱</td>
</tr>
<tr>
  <td>武器构建</td>
  <td>使用多种现成的技术生成绑定木马诱饵程序，当前采用Powershell的Payload非常普遍</td>
</tr>
<tr>
  <td>载荷投递</td>
  <td>入侵网站构建水坑、发送定向鱼叉邮件</td>
</tr>
<tr>
  <td>突防利用</td>
  <td>利用似乎工作相关的内容进行社工诱导点击执行诱饵程序</td>
</tr>
<tr>
  <td>安装植入</td>
  <td>下载第二阶段Shellcode完成控制，以计划任务方式达成持久化</td>
</tr>
<tr>
  <td>通信控制</td>
  <td>之前使用自有实现的通信协议，当前较多地使用商业化攻击框架Cobalt Strike</td>
</tr>
<tr>
  <td>达成目标</td>
  <td>使用Cobalt Strike进行集成化的自动渗透，不太在乎隐秘性，只要有可能进一步创建更多水坑</td>
</tr>
</tbody>
</table>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          